package com.dlc.shop.common.util;

import com.dlc.shop.common.exception.YamiShopBindException;
import lombok.extern.slf4j.Slf4j;

import java.util.regex.Pattern;

/**
 * 密码检验
 * @author yami
 */
@Slf4j
public class PasswordUtil {

    /**
     * 密码由字母、数字和特殊符号三种字符组成8-20位半角字符，区分大小写(检验时)
     */
    private static final Pattern PASSWORD_PATTERN = Pattern.compile("^(?=.*[a-zA-Z])(?=.*\\d)(?=.*(\\W|_))[A-Za-z\\d(\\W|_)]{8,20}$");

    public static void check(String password) {
        if (!checkFormat(password)) {
            // 这个异常是提示前端的，要在页面判断密码格式是否正确
            log.error("密码：{}", password);
            throw new YamiShopBindException("密码由字母、数字和特殊符号三种字符组成8-20位半角字符，区分大小写");
        }
    }

    public static boolean checkFormat(String password) {
        return PASSWORD_PATTERN.matcher(password).matches();
    }

}
